// #ifndef PARAMETERMODEL_H
// #define PARAMETERMODEL_H

// #include <QObject>

// #include <QObject>
// #include <QVector>
// #include <QList>
// #include <yaml-cpp/yaml.h>

// #define PARAM ParameterModel::getInstance()

// class ParameterModel : public QObject {
//     Q_OBJECT
//     Q_PROPERTY(int exposureTime READ exposureTime WRITE setExposureTime NOTIFY exposureTimeChanged)
//     Q_PROPERTY(int exposureAuto READ exposureAuto WRITE setExposureAuto NOTIFY exposureAutoChanged)
//     Q_PROPERTY(QVector<int> cameraImgSize READ cameraImgSize WRITE setCameraImgSize NOTIFY cameraImgSizeChanged)
//     Q_PROPERTY(int gainAuto READ gainAuto WRITE setGainAuto NOTIFY gainAutoChanged)
//     Q_PROPERTY(int getgain READ getgain WRITE setGain NOTIFY gainChanged)
//     Q_PROPERTY(int balanceWhiteAuto READ balanceWhiteAuto WRITE setBalanceWhiteAuto NOTIFY balanceWhiteAutoChanged)
//     Q_PROPERTY(int balanceRatio READ balanceRatio WRITE setBalanceRatio NOTIFY balanceRatioChanged)
//     Q_PROPERTY(QList<int> cameraRoi READ cameraRoi WRITE setCameraRoi NOTIFY cameraRoiChanged)
//     Q_PROPERTY(int imageNodeNum READ imageNodeNum WRITE setImageNodeNum NOTIFY imageNodeNumChanged)

// public:
//     static ParameterModel& getInstance() ;

//     int exposureTime() const;
//     void setExposureTime(int exposureTime);

//     int exposureAuto() const;
//     void setExposureAuto(int exposureAuto);

//     QVector<int> cameraImgSize() const;
//     void setCameraImgSize(const QVector<int> &cameraImgSize);

//     int gainAuto() const;
//     void setGainAuto(int gainAuto);

//     int getgain() const;
//     void setGain(int gain);

//     int balanceWhiteAuto() const;
//     void setBalanceWhiteAuto(int balanceWhiteAuto);

//     int balanceRatio() const;
//     void setBalanceRatio(int balanceRatio);

//     QList<int> cameraRoi() const;
//     void setCameraRoi(const QList<int> &cameraRoi);

//     int imageNodeNum() const;
//     void setImageNodeNum(int imageNodeNum);

//     void updateParameters(YAML::Node &valueTable) const;
//     void applyParameters(const YAML::Node &valueTable);

// signals:
//     void exposureTimeChanged();
//     void exposureAutoChanged();
//     void cameraImgSizeChanged();
//     void gainAutoChanged();
//     void gainChanged();
//     void balanceWhiteAutoChanged();
//     void balanceRatioChanged();
//     void cameraRoiChanged();
//     void imageNodeNumChanged();

// private:
//     int m_exposureTime;
//     int m_exposureAuto;
//     QVector<int> m_cameraImgSize;
//     int m_gainAuto;
//     int m_gain;
//     int m_balanceWhiteAuto;
//     int m_balanceRatio;
//     QList<int> m_cameraRoi;
//     int m_imageNodeNum;

//     ParameterModel(QObject* parent = nullptr);
//     ~ParameterModel() = default;
//     ParameterModel(const ParameterModel&) = delete;
//     ParameterModel& operator=(const ParameterModel&) = delete;
// };

// #endif // PARAMETERMODEL_H
